package com.cw.starter.exception;

/**
 * @author chenw
 * @version $$Id: JeeycCheckException.java, v 0.1 2018/9/20 下午4:57 chenw Exp $$
 */
public class CheckException extends AbstractExceptionWrapper {

    /**
     * 异常构造函数
     *
     * @param errorCode 异常code
     * @param errorMessage 异常描述
     * @param params 描述中的占位符替换值
     */
    public CheckException(Integer errorCode, String errorMessage, String... params) {
        super(format(errorMessage, (Object[]) params));
        this.errorCode = errorCode;
        this.errorMessage = format(errorMessage, (Object[]) params);
    }

    /**
     * 异常构造函数
     *
     * @param t 异常
     * @param errorCode 异常code
     * @param errorMessage 异常描述
     * @param params 描述中的占位符替换值
     */
    public CheckException(Throwable t, Integer errorCode, String errorMessage, String... params) {
        super(format(errorMessage, (Object[]) params), t);
        this.errorCode = errorCode;
        this.errorMessage = format(errorMessage, (Object[]) params);
    }

    /**
     * 异常构造函数
     *
     * @param errorCode 异常code
     * @param errorMessage 异常描述
     * @param t 异常
     */
    public CheckException(Integer errorCode, String errorMessage, Throwable t) {
        super(errorMessage, t);
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }

    /**
     * 异常构造函数
     *
     * @param errorCode 异常code
     * @param errorMessage 异常描述
     * @param clazz 抛出异常的class类
     * @param t 异常
     */
    public CheckException(Integer errorCode, String errorMessage, Class<?> clazz, Throwable t) {
        super(errorMessage, t);
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
        this.clazz = clazz;
    }

    /**
     * 异常构造函数
     *
     * @param errorCode 异常code
     * @param errorMessage 异常描述
     * @param clazz 抛出异常的class类
     * @param params 描述中的占位符替换值
     */
    public CheckException(Integer errorCode, String errorMessage, Class<?> clazz, String... params) {
        super(format(errorMessage, (Object[]) params));
        this.errorCode = errorCode;
        this.errorMessage = format(errorMessage, (Object[]) params);
        this.clazz = clazz;
    }

    /**
     * 异常构造函数
     *
     * @param t 异常
     * @param errorCode 异常code
     * @param errorMessage 异常描述
     * @param clazz 抛出异常的class类
     * @param params 描述中的占位符替换值
     */
    public CheckException(Throwable t, Integer errorCode, String errorMessage, Class<?> clazz, String... params) {
        super(format(errorMessage, (Object[]) params), t);
        this.errorCode = errorCode;
        this.errorMessage = format(errorMessage, (Object[]) params);
        this.clazz = clazz;
    }

}
